Field of the Invention
The present invention relates to a method of correcting errors in digital data and more particularly to a method suitable for use in cases where interpolation is not appropriate.
When reading data from a storage device such as an optical disk, a magneto-optical disk, or the like, several idle periods of operation are observed. One such period is the period preceding reading out of a signal from the storage device, and another period is a waiting time during which the storage device waits for an instruction from a host computer, for example. Both of these periods constitute idle periods, and their frequency and duration varies with the operations being performed.
While it has been proposed to perform error correction during these idle times, the error correcting process proposed in the past has been for a fixed time only, so that it may be stopped prematurely, before all errors have been connected.
In connection with reading data from compact disks, the CIRC correction code is used as an error correction code, such CIRC code consisting of a combination of a cross-interleaving and Reed Solomon codes. In the CIRC correction code, each symbol of the data is included in two series of error correction codes, referred to as the C.sub.1 series and the C.sub.2 series. Coding is first performed in the C.sub.2 series, and then an interleaving process is carried out with the further coding being executed in the C.sub.1 series. For the decoding, the inverse operation is performed, with decoding being performed in the C.sub.1 series, then the deinterleaving process is executed, and further decoding is carried out in the C.sub.2 series. In the case of the CIRC correction code, greater numbers of errors can be corrected by executing the error correcting process repetitively, using the C.sub.1 and C.sub.2 series.
When the CIRC operation is used, a pointer is used for decoding the C.sub.2 series which indicates the state of the error formed due to decoding in the C.sub.1 series. Thus, the operation of the decoding in the C.sub.2 series is carried on in accordance with the number of pointers developed in the C.sub.1 series, or whether the pointer is set at an error location obtained by the decoding in the C.sub.1 series. In other words, an indication is provided as to whether a single symbol error is corrected, a two symbol error is corrected, or where no error correcting has taken place. The pointer is necessary in order to reduce errors at the time of the correction.
In the conventional error correcting method, the error correcting process is stopped after a fixed time, even though more time remains during an idle period. However, with an increase in the number of repetitions of the correcting process, the error correcting capability can be more fully utilized.
In addition, in the conventional error correcting method, a relatively long time is required to read the pointer, which is nearly as long as the time required to read out the symbol of the code series from the storage device. This serves to reduce the amount of time during which error correction can take place. Also, an additional circuit is required in order to determine the number of pointers which are needed, since the correcting method in the second coding series is altered in dependence on the number of pointers which are included in the first code series.